function transform(target, name, descriptor) {
  console.log(target, name, descriptor)
  target.firstName = "一缕清风"
}

function mixins(...list) {
  return function (target) {
    Object.assign(target.prototype, ...list)
  }
}

const Foo = {
  foo() {
    console.log("foo")
  }
}

const Boo = {
  boo() {
    console.log("boo")
  }
}

@transform
@mixins(Foo, Boo)
class MyClass { }

let obj = new MyClass()
obj.foo() // foo
obj.boo() // boo
console.log(MyClass.firstName) // 一缕清风